import {
	useI18n
} from "@/locales/setupI18n";
import store from '@/store';

/**
 * 审核状态
 * @param status 状态码
 * @param msg 状态消息
 * @param errorMessageMode 错误消息提示模式: 'none' | 'modal' | 'message'
 */
export function checkStatus(status, msg, errorMessageMode = 'message') {
	const {
		t
	} = useI18n();
	// const i18n = useI18n();
	// console.log('checkStatus', t);
	const useIdentityStore = store;
	let statusMsg = '';
	let errMessage = '';
	const msgString = msg !== undefined && msg !== null && msg !== '' ? ` ${msg}` : '';
	if (!status) {
		errMessage = msgString;
	}
	switch (status) {
		case 100:
			statusMsg = `${status} - ${t('api.msg100')}${msgString}`;
			break;
		case 101:
			statusMsg = `${status} - ${t('api.msg101')}${msgString}`;
			break;
		case 102:
			statusMsg = `${status} - ${t('api.msg102')}${msgString}`;
			break;
		case 200:
			statusMsg = `${status} - ${t('api.msg200')}${msgString}`;
			break;
		case 201:
			statusMsg = `${status} - ${t('api.msg201')}${msgString}`;
			break;
		case 202:
			statusMsg = `${status} - ${t('api.msg202')}${msgString}`;
			break;
		case 203:
			statusMsg = `${status} - ${t('api.msg203')}${msgString}`;
			break;
		case 204:
			statusMsg = `${status} - ${t('api.msg204')}${msgString}`;
			break;
		case 205:
			statusMsg = `${status} - ${t('api.msg205')}${msgString}`;
			break;
		case 206:
			statusMsg = `${status} - ${t('api.msg206')}${msgString}`;
			break;
		case 207:
			statusMsg = `${status} - ${t('api.msg207')}${msgString}`;
			break;
		case 300:
			statusMsg = `${status} - ${t('api.msg300')}${msgString}`;
			break;
		case 301:
			statusMsg = `${status} - ${t('api.msg301')}${msgString}`;
			break;
		case 302:
			statusMsg = `${status} - ${t('api.msg302')}${msgString}`;
			break;
		case 303:
			statusMsg = `${status} - ${t('api.msg303')}${msgString}`;
			break;
		case 304:
			statusMsg = `${status} - ${t('api.msg304')}${msgString}`;
			break;
		case 305:
			statusMsg = `${status} - ${t('api.msg305')}${msgString}`;
			break;
		case 306:
			statusMsg = `${status} - ${t('api.msg306')}${msgString}`;
			break;
		case 307:
			statusMsg = `${status} - ${t('api.msg307')}${msgString}`;
			break;
		case 400:
			statusMsg = `${status} - ${t('api.msg400')}${msgString}`;
			errMessage = statusMsg;
			break;
			// 401: Not logged in
			// Jump to the login page if not logged in, and carry the path of the current page
			// Return to the current page after successful login. This step needs to be operated on the login page.
		case 401:
			store.dispatch("logout", false);
			// 跳转去登录页
			const pages = getCurrentPages();
			let currentRoute = '';
			if(pages && pages.length > 0){
				const currentPage = pages[pages.length - 1];
				if(currentPage.route){
					currentRoute = currentPage.route;
				}
			}
			// console.log(currentPage);
			if (currentRoute !== 'pages/sys/login/agreement' && currentRoute !== 'pages/sys/login/forgetPassword' &&
				currentRoute !== 'pages/sys/login/login' && currentRoute !== 'pages/sys/login/register' &&
				currentRoute !== 'pages/sys/login/setter'){
					// 拦截路由，并且跳转去登录页
					uni.navigateTo({
						url: '/pages/sys/login/login',
						passedParams: {
							info: '未登陆',
						},
					});
			}
			statusMsg = `${status} - ${t('api.msg401')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 403:
			statusMsg = `${status} - ${t('api.msg403')}${msgString}`;
			errMessage = statusMsg;
			break;
			// 404请求不存在
		case 404:
			statusMsg = `${status} - ${t('api.msg404')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 405:
			statusMsg = `${status} - ${t('api.msg405')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 406:
			statusMsg = `${status} - ${t('api.msg406')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 407:
			statusMsg = `${status} - ${t('api.msg407')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 408:
			statusMsg = `${status} - ${t('api.msg408')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 409:
			statusMsg = `${status} - ${t('api.msg409')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 410:
			statusMsg = `${status} - ${t('api.msg410')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 411:
			statusMsg = `${status} - ${t('api.msg411')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 412:
			statusMsg = `${status} - ${t('api.msg412')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 413:
			statusMsg = `${status} - ${t('api.msg413')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 414:
			statusMsg = `${status} - ${t('api.msg414')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 415:
			statusMsg = `${status} - ${t('api.msg415')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 416:
			statusMsg = `${status} - ${t('api.msg416')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 417:
			statusMsg = `${status} - ${t('api.msg417')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 418:
			statusMsg = `${status} - ${t('api.msg418')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 421:
			statusMsg = `${status} - ${t('api.msg421')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 422:
			statusMsg = `${status} - ${t('api.msg422')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 423:
			statusMsg = `${status} - ${t('api.msg423')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 424:
			statusMsg = `${status} - ${t('api.msg424')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 425:
			statusMsg = `${status} - ${t('api.msg425')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 426:
			statusMsg = `${status} - ${t('api.msg426')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 428:
			statusMsg = `${status} - ${t('api.msg428')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 429:
			statusMsg = `${status} - ${t('api.msg429')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 431:
			statusMsg = `${status} - ${t('api.msg431')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 449:
			statusMsg = `${status} - ${t('api.msg449')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 451:
			statusMsg = `${status} - ${t('api.msg451')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 500:
			statusMsg = `${status} - ${t('api.msg500')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 501:
			statusMsg = `${status} - ${t('api.msg501')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 502:
			statusMsg = `${status} - ${t('api.msg502')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 503:
			statusMsg = `${status} - ${t('api.msg503')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 504:
			statusMsg = `${status} - ${t('api.msg504')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 505:
			statusMsg = `${status} - ${t('api.msg505')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 506:
			statusMsg = `${status} - ${t('api.msg506')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 507:
			statusMsg = `${status} - ${t('api.msg507')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 509:
			statusMsg = `${status} - ${t('api.msg509')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 510:
			statusMsg = `${status} - ${t('api.msg510')}${msgString}`;
			errMessage = statusMsg;
			break;
		case 511:
			statusMsg = `${status} - ${t('api.msg511')}${msgString}`;
			errMessage = statusMsg;
			break;
		default:
			if (status !== undefined && status !== null && status !== 'undefined' && status !== 'null') {
				statusMsg = `${status} - ${t('api.requestError')}${msgString}`;
			} else {
				statusMsg = `${t('api.requestError')}${msgString}`;
			}
			errMessage = statusMsg;
			break;
	}
	// console.log('checkStatus', { status, msg, errorMessageMode, statusMsg, errMessage });
	if (errMessage) {
		// console.log('checkStatus', errorMessageMode);
		if (errorMessageMode === 'modal') {
			uni.showModal({
				title: t('api.errorTip'),
				content: errMessage,
				showCancel: false
			});
		} else if (errorMessageMode === 'message') {
			uni.showToast({
				title: errMessage,
				// duration: 2000,
				icon: 'none'
			});
		}
	}
}
